【Unity】第三人称:鼠标控制相机位置 |
您所在的位置:网站首页 › 鼠标 摄像头 › 【Unity】第三人称:鼠标控制相机位置 |
1.新建项目并创建一个游戏对象 2.把一个相机作为子对象 3.创建一个脚本并添加到相机 4.写好脚本 5.添加要锁定的游戏对象的Transform 6.运行游戏 相机移动轨迹为无底面的圆柱 希望有大佬能优化成半球 如有错误请指正 ----更新---- 看了一下怪猎的视角,发现这样写有点反人类 应该改成 my1 -= Input.GetAxis("Mouse Y") ; ----更新---- 研究了一下向量和四元数 更新代码比较多 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraMove : MonoBehaviour { public Transform Cube;//注视的目标 private float m1;//鼠标上下移动 private float m2;//鼠标左右移动 private int x=0;//用于判断向量x轴的正负 private int mo = 5;//向量模长 private void Update() { Look(); } private void Look() { Vector3 c = (transform.position-Cube.position).normalized;//指向目标的单位向量 Vector3 cc;//垂直向量 if (c.z == 0) { cc= new Vector3(0, 0, -1); } else { cc= new Vector3(-c.z / c.x, 0, 1).normalized; } //判断向量x轴的正负 if (c.x > 0) { x = 1; } else { x = -1; } //限制向量y轴范围0~4 if ((c.y>0&&c.y*mo 0) { x = 1; } else { x = -1; } //限制向量y轴范围0~4 if ((c.y > 0 && c.y * mo < 4) || (c.y = 4 && Input.GetAxis("Mouse Y") > 0)) { m1 = -Input.GetAxis("Mouse Y") * x; } else { m1 = 0; } m2 = Input.GetAxis("Mouse X"); Quaternion q = Quaternion.AngleAxis(m2, Vector3.up);//鼠标左右移动控制绕 y轴 的旋转 q *= Quaternion.AngleAxis(m1, cc);//鼠标上下移动控制绕 与向量垂直的 轴旋转 transform.position = q * c * mo + Cube.position;//确定最终位置 transform.LookAt(Cube);//注视目标 } }----更新---- 修改45行: if ((c.y > 0 && c.y < 0.8) || (c.y = 0.8 && Input.GetAxis("Mouse Y") > 0)) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |